/* 
 * File:   list.h
 * Author: gustavo
 *
 * Created on July 14, 2011, 1:27 PM
 */

#ifndef LIST_H
#define	LIST_H

#ifdef	__cplusplus
extern "C" {
#endif

	typedef void List;

	List * list_new(void);

	long int list_get_size(List * list);

	void * list_insert(List * list, void * data);

	void * list_remove(List * list, void * data);

	void * list_get_next(List * list);
	
	void * list_get_data(List * list, long int idx);

	void list_reset(List * list);

	void list_clear(List * list, void (*data_free)(void *));

	void list_delete(List * list);


#ifdef	__cplusplus
}
#endif

#endif	/* LIST_H */

